﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using EControl.Modelo;
using System.Data.SqlClient;
using System.Windows;

namespace EControl.Controle
{
    class VagaController
    {
        private string strConn = "Data Source=MARIA-PC\\SQLEXPRESS;Initial Catalog=dbestacionamento;Integrated Security=False;User ID=developer;Password=developer;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False";

        public List<VagaModel> pesquisarTodos()
        {
            try
            {
                SqlConnection sqlCon = new SqlConnection();
                sqlCon.ConnectionString = strConn;

                sqlCon.Open();

                string query = "select * from vaga order by vaga_id asc";

                SqlCommand cmd = new SqlCommand(query, sqlCon);
                SqlDataReader dr = cmd.ExecuteReader();

                List<VagaModel> resultado = new List<VagaModel>();
                VagaModel vaga;

                while (dr.Read())
                {
                    vaga = new VagaModel();

                    vaga.Id = dr["vaga_id"].ToString();
                    vaga.Ativo = (bool)dr["is_ativo"] ? "Sim" : "Não";
                    
                    resultado.Add(vaga);
                }

                sqlCon.Close();

                return resultado;
            }
            catch (Exception)
            {
                MessageBoxButton botao = MessageBoxButton.OK;
                MessageBox.Show("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema ou tente novamente mais tarde", "Erro", botao);

                return null;
            }
        }

        public bool criaVaga()
        {
            try
            {
                SqlConnection sqlCon = new SqlConnection();
                sqlCon.ConnectionString = strConn;

                sqlCon.Open();

                string query = "insert into vaga (ts_criacao, ts_atualizacao) values(GETDATE(), GETDATE())";

                SqlCommand cmd = new SqlCommand(query, sqlCon);
                int ok = cmd.ExecuteNonQuery();

                sqlCon.Close();

                if (ok > 0)
                {
                    MessageBoxButton botao = MessageBoxButton.OK;
                    MessageBox.Show("Vaga criada com sucesso!", "Aviso", botao);
                    return true;
                }
                else
                {
                    MessageBoxButton botao = MessageBoxButton.OK;
                    MessageBox.Show("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema ou tente novamente mais tarde", "Erro", botao);
                    return false;
                }
            }
            catch (Exception)
            {
                MessageBoxButton botao = MessageBoxButton.OK;
                MessageBox.Show("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema ou tente novamente mais tarde", "Erro", botao);

                return false;
            }
        }

        public bool desativaVaga(string id)
        {
            try
            {
                SqlConnection sqlCon = new SqlConnection();
                sqlCon.ConnectionString = strConn;

                sqlCon.Open();

                string query = "update vaga set is_ativo = 0, ts_atualizacao = GETDATE() where vaga_id = " + id;

                SqlCommand cmd = new SqlCommand(query, sqlCon);
                int ok = cmd.ExecuteNonQuery();

                sqlCon.Close();

                if (ok > 0)
                {
                    MessageBoxButton botao = MessageBoxButton.OK;
                    MessageBox.Show("Vaga desativada com sucesso!", "Aviso", botao);
                    return true;
                }
                else
                {
                    MessageBoxButton botao = MessageBoxButton.OK;
                    MessageBox.Show("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema ou tente novamente mais tarde", "Erro", botao);
                    return false;
                }
            }
            catch (Exception)
            {
                MessageBoxButton botao = MessageBoxButton.OK;
                MessageBox.Show("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema ou tente novamente mais tarde", "Erro", botao);

                return false;
            }
        }

        public bool ativaVaga(string id)
        {
            try
            {
                SqlConnection sqlCon = new SqlConnection();
                sqlCon.ConnectionString = strConn;

                sqlCon.Open();

                string query = "update vaga set is_ativo = 1, ts_atualizacao = GETDATE() where vaga_id = " + id;

                SqlCommand cmd = new SqlCommand(query, sqlCon);
                int ok = cmd.ExecuteNonQuery();

                sqlCon.Close();

                if (ok > 0)
                {
                    MessageBoxButton botao = MessageBoxButton.OK;
                    MessageBox.Show("Vaga ativada com sucesso!", "Aviso", botao);
                    return true;
                }
                else
                {
                    MessageBoxButton botao = MessageBoxButton.OK;
                    MessageBox.Show("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema ou tente novamente mais tarde", "Erro", botao);
                    return false;
                }
            }
            catch (Exception)
            {
                MessageBoxButton botao = MessageBoxButton.OK;
                MessageBox.Show("Ocorreu um erro no sistema, por favor entre em contato com o administrador do sistema ou tente novamente mais tarde", "Erro", botao);

                return false;
            }
        }
    }
}
